home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / pmake / lst / lstOpen.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-19  |  1.7 KB  |  56 lines

  1. /*-
  2.  * LstOpen.c --
  3.  *    Open a list for sequential access. The sequential functions access the
  4.  *    list in a slightly different way. CurPtr points to their idea of the
  5.  *    current node in the list and they access the list based on it.
  6.  *    If the list is circular, Lst_Next and Lst_Prev will go around
  7.  *    the list forever. Lst_IsAtEnd must be used to determine when to stop.
  8.  *
  9.  * Copyright (c) 1988 by University of California Regents
  10.  *
  11.  * Permission to use, copy, modify, and distribute this
  12.  * software and its documentation for any purpose and without
  13.  * fee is hereby granted, provided that the above copyright
  14.  * notice appears in all copies.  Neither the University of California nor
  15.  * Adam de Boor makes any representations about the suitability of this
  16.  * software for any purpose.  It is provided "as is" without
  17.  * express or implied warranty.
  18.  */
  19. #ifndef lint
  20. static char *rcsid =
  21. "$Id: lstOpen.c,v 1.6 88/11/17 20:53:43 adam Exp $ SPRITE (Berkeley)";
  22. #endif lint
  23.  
  24. #include    "lstInt.h"
  25.  
  26. /*-
  27.  *-----------------------------------------------------------------------
  28.  * Lst_Open --
  29.  *    Open a list for sequential access. A list can still be searched,
  30.  *    etc., without confusing these functions.
  31.  *
  32.  * Results:
  33.  *    SUCCESS or FAILURE.
  34.  *
  35.  * Side Effects:
  36.  *    isOpen is set TRUE and curPtr is set to NilListNode so the
  37.  *    other sequential functions no it was just opened and can choose
  38.  *    the first element accessed based on this.
  39.  *
  40.  *-----------------------------------------------------------------------
  41.  */
  42. ReturnStatus
  43. Lst_Open (l)
  44.     register Lst    l;
  45. {
  46.     if (LstValid (l) == FALSE) {
  47.         return (FAILURE);
  48.     }
  49.     ((List) l)->isOpen = TRUE;
  50.     ((List) l)->atEnd = LstIsEmpty (l) ? Head : Unknown;
  51.     ((List) l)->curPtr = NilListNode;
  52.  
  53.     return (SUCCESS);
  54. }
  55.  
  56.